<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of serviceXml
 *
 * @author USUARIO
 */
class serviceXml {

     public function agregarAplicacion($xml,$xmlAplicacionActual)
  {

         $childrenAplication = $xml->addChild('application');
         $childrenAplication->addChild('id',$xmlAplicacionActual->id);
         $childrenAplication->addChild('name',$xmlAplicacionActual->name);

         $childrenWindows = $childrenAplication->addChild('windows');
         $xmlWindows      =  $xmlAplicacionActual->windows->window;

         foreach($xmlWindows as $window)
         {
             $this->agregarVentanaXml($childrenWindows,$window);
         }

  }

  public function agregarVentanaXml($xml,$xmlVentanaActual)
  {


         $childrenWindow = $xml->addChild('window');
         $childrenWindow->addChild('title',$xmlVentanaActual->title);
         $childrenWindow->addChild('start_time',$xmlVentanaActual->start_time);
         $childrenWindow->addChild('end_time',$xmlVentanaActual->end_time);
         $xmlHours = $xmlVentanaActual->hours->hour;
         $childrenHours=  $childrenWindow->addChild('hours');
         foreach($xmlHours as $hour)
         {
            $this->agregarHourXml($childrenHours, $hour->start_time, $hour->end_time);
         }

  }

  public function agregarHourXml($xml,$newHoraInicio,$newHoraFin)
  {
            $childrenHours = $xml->addChild('hour');
            $childrenHours->addChild('start_time',$newHoraInicio);
            $childrenHours->addChild('end_time',$newHoraFin);
            return $childrenHours;
  }

  /*
   * Metodo para buscar una aplicacion(application) por Id
   * si encuentro la aplicacion
  */
  public function buscarPorId($xmlElement,$id)
  {

      $xmlAplications = $xmlElement->applications->application;

      foreach($xmlAplications as $application)
      {

          if(strval($application->id)==strval($id))
          {
            return  array("success" => true, "objectXml" =>$application);
          }
      }
      return  array("success" => false,"objectXml" =>$xmlElement->applications);
  }

  public function buscarPorVentana($xmlElement,$titulo)
  {
      $xmlWindows = $xmlElement->windows->window;
      foreach($xmlWindows as $window)
      {
         if($window->title==$titulo)
         {
             return  array("success" => true, "objectXml" =>$window);
         }
      }
      return  array("success" => false,"objectXml" => $xmlElement->windows);
  }

  /*el parametro hora tiene que ser del tipo <date> */
  public function buscarPorHora($xmlElement,$newHoraInicio)
  {
      $xmlHours = $xmlElement->hours->hour;
      foreach($xmlHours as $hour)
      {
         /*obtengo la hora que finalizo la aplicacion y le agrego 3 segundos (artificio)( lapso que se pudo producir al generar el otro xml) */
         $end_time = date('Y-m-d H:i:s',strtotime( '+3 second',strtotime( $hour->end_time))  );
         /*si endTime es mayor se tiene que actualizar el registro*/
         if($end_time>=$newHoraInicio)
         {
            return array("success" => true ,"code" => "hour" , "objectXml" => $hour);
         }
      }

       /*si al final de de la busqueda ninguno cumple con la condicion
          * se tiene que registar un nuevo registro de hora
        */
     return array("success" => true ,"code" => "hours" , "objectXml" =>$xmlElement->hours);
   }

   function diferenciaSegundos ($fecha_inicio,$fecha_fin)
    {
        $time_inicio = strtotime($fecha_inicio);
        $time_fin = strtotime($fecha_fin);
        if ($time_inicio>$time_fin)
        {
            return $time_inicio - $time_fin;
        }
        else
        {
             return $time_fin - $time_inicio;
        }
    }




}
?>
